package com.rayframework.beans.factory.annotation;


import java.lang.annotation.*;

/**
 * 告知 Ray 此注解所标注的类将需要纳入到 RayBean 管理工厂中
 * 注解 {@link RayBean} 和  @RayConfiguration 一起工作，为了摆脱原先的xml和java config方式
 *
 * @author LiaoYuXing-Ray
 * @version 1.0
 * @createDate 2023/9/19 14:19
 **/
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) // 指定该注解可以应用于方法（包括构造方法和普通方法）和注解类型上
@Retention(RetentionPolicy.RUNTIME) // 指定该注解在运行时仍然有效
@Documented // 表示该注解将被包含在JavaDoc文档中
public @interface RayBean {

    String[] value() default {};

    String[] name() default {};

    /**
     * 为true，表示 Ray 容器会尝试自动装配这个bean。
     * 如果设置为false，则 Ray 容器不会尝试自动装配这个bean，需要手动将其注入到其他类中。 2023/9/20 10:59
     */
    boolean autowireCandidate() default true;

    String initMethod() default ""; // TODO 暂时未使用

    String destroyMethod() default "(inferred)"; // TODO 暂时未使用
}
